package org.jsola.hr.helper;

import org.jsola.common.SafeKit;
import org.jsola.hr.dto.PolicyCourierTypeAddDTO;
import org.jsola.hr.dto.PolicyCourierTypeUpdateDTO;
import org.jsola.hr.entity.PolicyCourierTypeDO;
import org.jsola.hr.query.PolicyCourierTypeQuery;
import org.jsola.hr.service.IPolicyCourierTypeService;
import org.jsola.hr.vo.PolicyCourierTypeVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

import static org.jsola.hr.core.AbstractTest.SITE_ID;



/**
 * 政策速递类型
 *
 * @author zhr
 */
@Component
public class PolicyCourierTypeTestHelper extends BaseTestHelper {
    
    @Autowired
    private IPolicyCourierTypeService policyCourierTypeService;

    /**
     * 生成add测试数据
     * @return PolicyCourierTypeAddDTO
     */
    public PolicyCourierTypeAddDTO getPolicyCourierTypeAddDTO(){
        PolicyCourierTypeAddDTO policyCourierTypeAddDTO = new PolicyCourierTypeAddDTO();
        policyCourierTypeAddDTO.setCode(getRandomValue("varchar",50));
        policyCourierTypeAddDTO.setName(getRandomValue("varchar",50));
        policyCourierTypeAddDTO.setSort(SafeKit.getInteger(getRandomValue("int",10)));
        return policyCourierTypeAddDTO;
    }


    /**
     * 生成update测试数据
     * @return PolicyCourierTypeUpdateDTO
     */
    public PolicyCourierTypeUpdateDTO getPolicyCourierTypeUpdateDTO(PolicyCourierTypeVO policyCourierTypeVO){
        return policyCourierTypeService.selectDOById(policyCourierTypeVO.getId(), SITE_ID).to(PolicyCourierTypeUpdateDTO.class);
    }

    /**
     * 生成查询数据
     * @return PolicyCourierTypeQuery
     */
    public PolicyCourierTypeQuery getPolicyCourierTypeQuery() {
        PolicyCourierTypeQuery policyCourierTypeQuery = new PolicyCourierTypeQuery();
        List<PolicyCourierTypeDO> policyCourierTypeDOList = policyCourierTypeService.list(new PolicyCourierTypeDO(),SITE_ID);
        if (!CollectionUtils.isEmpty(policyCourierTypeDOList)) {
            PolicyCourierTypeDO policyCourierTypeDO = policyCourierTypeDOList.get(0);
            policyCourierTypeQuery = policyCourierTypeDO.to(PolicyCourierTypeQuery.class);
        }
        return policyCourierTypeQuery;
    }

    /**
     * 保存示例
     * @return PolicyCourierTypeVO
     */
    public PolicyCourierTypeVO savePolicyCourierTypeExample(){
        PolicyCourierTypeAddDTO addDTO = this.getPolicyCourierTypeAddDTO();
        PolicyCourierTypeVO policyCourierTypeVO = policyCourierTypeService.save(addDTO,buildTokenUser());
        return policyCourierTypeVO;
    }


}

